package main

import (
	"fmt"
)

// SU向SM发送的数据结构
type SUToSMData struct {
	VER    byte   // 通信协议版本号
	ADR    byte   // 设备地址描述
	CID1   byte   // 控制标识码1
	CID2   byte   // 控制标识码2
	LENGTH byte   // INFO字节长度
	INFO   string // 命令信息
}

// SM响应SU的数据结构
type SMToSUData struct {
	RTN byte // 返回码
}

// 发送数据给SM
func SendDataToSM(data SUToSMData) SMToSUData {
	// 这里模拟发送数据给SM的过程
	// 假设发送成功，返回正常的响应
	return SMToSUData{RTN: 0x00}
}

// 解析SM的响应
func ParseSMResponse(response SMToSUData) string {
	var message string
	switch response.RTN {
	case 0x00:
		message = "正常"
	case 0x01:
		message = "VER错"
	case 0x02:
		message = "CHKSUM错"
	case 0x03:
		message = "LCHKSUM错"
	case 0x04:
		message = "CID2无效"
	case 0x05:
		message = "命令格式错"
	case 0x06:
		message = "无效数据"
	case 0x80:
		message = "ASC错"
	default:
		message = "未知错误"
	}
	return message
}

func main() {
	// 构造SU向SM发送的数据
	data := SUToSMData{
		VER:    0x21,
		ADR:    1,
		CID1:   0x00,
		CID2:   0x42, // 假设CID2为0x42
		LENGTH: 0x01, // INFO长度为1
		INFO:   "A",  // INFO为"A"
	}

	// 发送数据给SM
	response := SendDataToSM(data)

	// 解析SM的响应
	message := ParseSMResponse(response)
	fmt.Println("SM响应消息:", message)
}
